home *** CD-ROM | disk | FTP | other *** search
/ New Star Software Collection / NSS_Collection.iso / 3-069 qemm 603 / 1.ima / QEMM-MAN / APPEND-A.QEM next >
Encoding:
Text File  |  1991-10-07  |  22.9 KB  |  449 lines

  1. ~Heading~ Appendix A: Troubleshooting
  2.  
  3.  Using LOADHI without QEMM386.SYS
  4.  
  5.  You can use LOADHI with another 386 expanded memory manager if you
  6. have Quarterdeck's QRAM. This is not as efficient on an 80386,
  7. 80386SX or i486 as QEMM's RAM parameter. LOADHI does require that
  8. you either have QEMM386.SYS or QRAM.SYS.
  9.  
  10.  Using QEMM-386 on 8088, 8086, or 80286 PCs
  11.  
  12.  QEMM-386 only operates on an 80386, 80386SX or i486 PC. If your PC
  13. does not have an 80386, Quarterdeck's QRAM program supplies
  14. QEMM-386's LOADHI features, if you have EMS 4 or EEMS expanded
  15. memory or Chips and Technologies Shadow RAM. On PS/2 Model 50 and
  16. 60s, QEMM-50/60 also provides many of the same features of
  17. QEMM-386, provided you have the proper extra memory hardware. 
  18.  
  19.  PC does not function after booting with QEMM.
  20.  
  21.  This may occur when QEMM and another device (or feature) of your
  22. PC are unable to cooperate. This section covers problems when just
  23. having DEVICE=QEMM386.SYS in the CONFIG.SYS file causes the
  24. computer to "lock up".  The next section covers problems with
  25. LOADHI~dash~although the information here may prove to be useful as
  26. well. You may need a Boot Floppy to proceed, so be sure to have one
  27. ready (see Appendix B).
  28.  
  29.  You must first figure out what the conflict is:  
  30.  
  31. ~Item~ If you have the RAM parameter on the QEMM386.SYS line in the
  32. CONFIG.SYS file, remove the RAM parameter and reboot.  
  33.  
  34.  If the PC now functions correctly, then some area between 640K and
  35. 1024K is being used by a device but the RAM parameter does not see
  36. the device. It thinks that it can put some high RAM into the same
  37. spot. 
  38.  
  39. ~Item~ Check to see if any areas which are in the high RAM area are
  40. currently in use by another device~dash~using QEMM.COM or Manifest
  41. First Meg Overview and QEMM Types displays, 
  42.  
  43.  The most common devices are video or network adapters. Usually
  44. QEMM can see these cards, but if areas that are "Mappable" or
  45. "Rammable" are in locations where an adapter already exists, then
  46. you should use the EXCLUDE parameter on the QEMM386.SYS line to
  47. force QEMM not to use these areas.  If a network adapter has some
  48. RAM between 640K and 1024K that QEMM does not recognize, then that
  49. area should be excluded.
  50.  
  51.  If removing the RAM option does NOT work, then add "X=0000-FFFF
  52. FRAME=NONE" to the QEMM386.SYS line and reboot.  If this works,
  53. type, QEMM ON, to see if QEMM can enter Virtual 8086 mode at all.
  54.  
  55.  If you are NOT using the RAM parameter and the computer does not
  56. boot correctly, then there is another conflict. Try adding
  57. parameters which disable automatic features of QEMM-386 such as
  58. NOCOMPAQFEATURES, NOTOPMEMORY, NOROMHOLES, NOFILL, NOVIDEOFILL,
  59. NOXBDA, NOSHADOWRAM, IGNOREA20, NOROM, and NOSORT.  
  60.  
  61.  Normally you would not add all of these at once. In fact, adding
  62. one at a time and removing those that have no effect would be the
  63. most efficient way to isolate a problem.  You should remove any
  64. INCLUDE parameters, and specifically EXCLUDE areas you know may be
  65. in use by other devices.  See Chapter 3, QEMM386.SYS Program for
  66. parameters and examine them to determine if there may be a
  67. conflict. Be sure to remove any extra parameters you try which do
  68. not seem to make any difference.  A good starting point is "NOFILL
  69. NOSORT OFF".  You may find that "IGNOREA20 DMA=64 NOROM" makes a
  70. difference.  If it does, see the descriptions of these items to
  71. determine why these parameters are necessary.  Some parameters may
  72. or may not make sense on your PC. 
  73.  
  74.  If you have a PC with Microchannel Architecture, then the MCA.ADL
  75. file may INCLUDE areas for you which may not be correct. Manifest
  76. uses the same MCA.ADL file, and the System Adapters display can
  77. show you the areas used by the adapters.
  78.  
  79.  If you still have not determined the conflict, then you should
  80. follow the instructions in Appendix C, to create a "pure
  81. environment" in order to isolate the exact problem which is causing
  82. the trouble.
  83.  
  84.  PC does not function when using LOADHI
  85.  
  86.  If your PC locks up" after using DESQview's XDV.COM, DV.COM,
  87. LOADHI.COM or LOADHI.SYS, (and having the RAM option does not cause
  88. trouble), then there is probably a memory conflict between 640K and
  89. 1024K (see above), but only when the conflicting memory is used. 
  90. It's not always easy to tell which program using LOADHI is causing
  91. the problem, but a patient, systematic approach (using LOADHI with
  92. one program at a time) is the fastest and most reliable method.
  93.  
  94.  While the most common problem when loading items into high RAM is
  95. that the RAM area being loaded into is actually used by something
  96. else, there are programs which are not capable of being loaded
  97. high.  These programs may require addresses below 640K to work for
  98. example.  As long as there is enough room to load the program (you
  99. can use the /GETSIZE option of LOADHI to be sure) most programs can
  100. be loaded into high memory.  Watch the program's initialization
  101. display to see if it loads successfully.
  102.  
  103.  If the problem is with DESQview's XDV.COM or DV.COM when running
  104. DESQview, then you can use the "/L" (no quotes) option of XDV.COM
  105. to determine the areas of high RAM which XDV is using to load the
  106. DV.EXE file into.  You can then use the "/X=xxxx-yyyy" option to
  107. XDV.COM to specifically exclude areas which may be a problem.  If
  108. you find an area, then use the EXCLUDE parameter on the QEMM386.SYS
  109. line to keep the area excluded.  The /L and /X options to XDV.COM
  110. can both be used at the same time, and the /X option may be used
  111. more than once if needed.
  112.  
  113.  Network drivers "lock up" or act unpredictably
  114.  
  115.  This problem is probably a memory conflict with a memory area
  116. between 640K and 1024K. Token Ring, ARCnet, Proteon, Ethernet, and
  117. some others may not be "seen" by QEMM at boot time, so QEMM may
  118. have placed high RAM into the memory area used by the network card.
  119. Use the methods described previously to isolate the conflicting
  120. area and EXCLUDE it on the QEMM386.SYS line in the CONFIG.SYS file.
  121. You may even find the memory address listed when the network driver
  122. initializes, and most network cards list the addresses they use in
  123. their documentation.
  124.  
  125.  Graphics programs have corrupted displays
  126.  
  127.  The most likely cause of a graphics program having its display
  128. appear corrupted or "fuzzy" is that some high RAM has been placed
  129. into an area that the graphics adapter was not using until a
  130. particular program started using it. Removing any INCLUDE
  131. parameters and using the QEMM Analyze display after running the
  132. graphics program should identify the area of conflict. You should
  133. then either EXCLUDE the video area being used (somewhere in the
  134. A000 to CFFF area, but probably not all of it), and/or not use
  135. INCLUDE to put high RAM into as large an area. 
  136.  
  137.  Floppy drive does not work or reports "Drive not ready" when
  138. QEMM-386 is loaded
  139.  
  140.  There are two reasons why the floppy drive may have trouble when
  141. QEMM-386 is loaded.  The first, and most likely, is that you have
  142. used the ROM parameter with QEMM-386.  The ROM parameter copies
  143. your ROM to RAM and then maps the RAM into the same location where
  144. the ROM is.  The result is that the ROM area is  able to work much
  145. faster since it is now using RAM.  However, some ROMs use "timing
  146. loops" to determine if the floppy drive is ready.  Now that the ROM
  147. area is faster, the timing loop takes less time so the computer
  148. thinks that the drive is malfunctioning.  You can either remove the
  149. ROM parameter or attempt to find the exact location of the floppy
  150. drive code (not easy to do) and use ROM=xxxx-yyyy to map the areas
  151. NOT involved with timing.
  152.  
  153.  The second reason a floppy drive may not work correctly is that is
  154. uses DMA.  Specifying DMA=64 on the QEMM386.SYS line should correct
  155. this problem.
  156.  
  157.  Attempting to LOADHI a program reports "Not enough room to load
  158. high" 
  159.  
  160.  When using LOADHI, a program needs its "normal" amount of memory
  161. in high RAM in order to get started.  Many TSRs and device drivers
  162. take much more room to initially load into memory and then reduce
  163. their memory size to only the amount needed to stay resident.  The
  164. /GETSIZE (/GS) parameter can be used with LOADHI to determine if
  165. this is happening. Using the Optimize program automatically keeps
  166. track of the amount of "run time" memory as well as its "resident"
  167. size for all programs in the CONFIG.SYS and AUTOEXEC.BAT files, and
  168. will try to find a way to place as many programs in high RAM as
  169. possible.
  170.  
  171.  LOADHI fails with an SCSI disk drive controller
  172.  
  173.  When using SCSI (or other "bus master") devices, the memory
  174. mapping feature of QEMM-386 is not seen by the disk controller; the
  175. "bus master" controller will "talk" to the memory directly. Since
  176. the controller doesn't know that the high RAM is being provided
  177. through memory mapping, and LOADHI is asking to place a program
  178. into memory the drive controller can't "see", LOADHI doesn't work
  179. correctly. This is easily corrected by adding DISKBUF=2 to the
  180. QEMM386.SYS line. This parameter tells QEMM-386 to provide a disk
  181. buffer in "non-mapped" memory for the disk drive to use when it
  182. needs to. Higher numbers result in better disk performance, but
  183. increase the resident size of QEMM-386 below 640K. Also QEMM
  184. supports the Virtual DMA Services (VDS) specification which
  185. addresses this problem. Contact the SCSI maker about getting a
  186. driver that supports VDS.
  187.  
  188.  QEMM-386 reports "not enough room to load" 
  189.  
  190.  If you have only 1MB of memory on your 80386 and use the RAM
  191. parameter, it is possible that QEMM-386 will not have enough memory
  192. to both load itself and fill in all of the unused high RAM areas. 
  193. This is especially true on systems which use some of the extra
  194. memory to map ROM for themselves (Shadow RAM) without using QEMM's
  195. ROM parameter.  Since the Shadow RAM is being used to map high RAM
  196. and possibly ROM, there is not enough extended memory left over for
  197. QEMM-386 to load its own program code! QEMM-386 does not run in
  198. Conventional or high RAM; it actually uses extended memory for the
  199. program code. The solution is to get more memory. In the meantime,
  200. you can use RAM=xxxx-yyyy to place high RAM into a smaller area in
  201. order to leave some memory free for QEMM to use, or you may not be
  202. able to use RAM at all.
  203.  
  204.  Another reason this could happen is that QEMM-386 is not able to
  205. access the "extra" memory beyond 640K on your PC.  QEMM-386 can
  206. find memory, but some PC manufacturers hide their extra memory or
  207. do not allow it to be extended memory.  Once again, there will not
  208. be enough extended memory for QEMM-386 to load itself into. The ROM
  209. parameter uses memory too, and since the PC may already be
  210. performing a similar function, you should remove it until you get
  211. more memory.
  212.  
  213.  PC boots but the keyboard does not work
  214.  
  215.  If the keyboard does not respond to the familiar DOS prompt, then
  216. your PC may use the "A20" line in a non-standard way.  The "A20"
  217. line is used to gain access to memory above 1024K and is thus very
  218. important to QEMM-386.  Use of the UNUSUAL8042 parameter should
  219. correct this problem. 
  220.  
  221.  Using QEMM with Microsoft Windows
  222.  
  223.  QEMM-386 will work with both Windows/286 2.xx and Windows/386
  224. 2.xx.  There are several considerations for each.
  225.  
  226.  For Windows/286 2.xx, QEMM-386 can provide expanded memory for all
  227. programs using Windows. The Windows/286 SETUP program will NOT
  228. complete if there is a valid DEVICE=QEMM386.SYS line in the
  229. CONFIG.SYS file.  You may simply modify the CONFIG.SYS file
  230. temporarily by placing "REM" (without quotes) in front of the
  231. DEVICE=QEMM386.SYS line.  There is no need to reboot after having
  232. changed the CONFIG.SYS line, since the Windows 2.xx SETUP program
  233. only check to see if a valid line is there, and a line with REM in
  234. front of it is not valid.  The Windows 2.xx SETUP program will then
  235. complete and Windows will be installed.  You should NOT have
  236. Windows 2.xx install its "HIMEM.SYS" driver, since QEMM-386
  237. provides an XMS interface already.  Be sure to remove the "REM"
  238. after the installation.
  239.  
  240.  Windows/386 2.xx can NOT run with QEMM-386 active.  However, the
  241. "Windows" portion of Windows/386 2.xx CAN be used. This is a
  242. program which comes with Windows/386 2.xx called WIN86.COM.  This
  243. program will NOT run "off-the- shelf" programs in Windows, but will
  244. run any Windows-based programs.  The WIN86.COM program may even be
  245. run inside DESQview.
  246.  
  247.  If you are running several Windows 2.xx programs, it may be
  248. advantageous to run them inside DESQview.  This way, each Windows
  249. 2.xx program gets its own memory area to use and does not have to
  250. share the memory with other Windows 2.xx programs. 
  251.  
  252.  Using LOADHI FILES with Microsoft Windows (strange beeping when
  253. starting Windows)
  254.  
  255.  Microsoft Windows 2.xx seems to not like having the DOS resource
  256. FILES loaded into high RAM.  If there are fewer than 10 FILES
  257. resources below 640K, then Windows will usually act very strangely
  258. when started, and will never actually start working. You must have
  259. at least FILES=10 in your CONFIG.SYS file, and if you run other
  260. programs in DESQview before using Windows, you may need more before
  261. Windows will start. If the problem persists, try adding 5 more
  262. FILES at a time until it goes away. Once you have determined the
  263. minimum needed for Windows additional room for FILES can use
  264. LOADHI.
  265.  
  266.  Paradox 386 requires QEMM-386 to be ON
  267.  
  268.  The current versions of Paradox 386 require that QEMM-386 be in
  269. the ON state. If you are not using expanded memory or the RAM
  270. parameter, then you will need to explicitly include the ON
  271. parameter on the QEMM386.SYS line. Later versions of Paradox 386
  272. may correct this anomaly.
  273.  
  274.  Program reports a "Packed is file corrupt" message
  275.  
  276.  Some software packages are delivered in a "packed file" format.
  277. This allows more files to fit on the disk and also helps the
  278. program load faster.  Due to a "bug" in some versions of EXEPACK,
  279. the "unpacking" algorithm does not work if the program is loaded
  280. below 64K (not 640K, 64K) and the "A20" line is enabled. Since use
  281. of the LOADHI programs and other features of QEMM-386 can save a
  282. lot of memory, it is possible that the area where programs are
  283. loaded may begin below 64K. If this happens and the "A20" line is
  284. enabled (as it is on some computers and when DESQview is running)
  285. the "Packed file is corrupt" message may appear. Usually you can
  286. add some DOS resources (BUFFERS is a good start) to use up some
  287. memory, or load another COMMAND.COM to get the starting address
  288. above 64K. Running the program in a slightly smaller DESQview
  289. window will also usually make the message go away when it appears
  290. in DESQview.
  291.  
  292.  Programs report  "Exception 13" 
  293.  
  294.  Exceptions are unusual or invalid conditions associated with the
  295. execution of a particular instruction of the 80386 processor.  The
  296. 80386 recognizes several different classes of exceptions, and
  297. assigns a different number to each class. QEMM-386 has been
  298. designed to capture these 80386 exception vectors and display them.
  299. Exception 13 is the "General Protection Fault" error. Any
  300. privileged instruction or any instruction that references memory
  301. incorrectly can cause an Exception 13. 
  302.  
  303.  In the first case, privileged instructions, the Exception 13 could
  304. indicate that a program has executed a privileged instruction or
  305. I/O reference. This could be a special instruction which is only
  306. allowed in protected mode while the PC is not in protected mode. 
  307. If this is the case the "Continue" option of the "Terminate, Reboot
  308. or Continue?" prompt  will tell the 80386 to reorder the ranking of
  309. privileged instructions and the program can continue to execute.
  310. However, this will disable QEMM and any programs that have been
  311. loaded high.
  312.  
  313.  It is the second case, instructions that reference memory
  314. incorrectly, that are far more common to QEMM-386 (and DESQview
  315. 386) users. Here the exception may indicate that the current
  316. program has a "bug" or has gone astray in some way. QEMM-386 has
  317. not necessarily caused the "bug" nor has it necessarily caused the
  318. program to act differently. QEMM-386 is just able to report the
  319. problem.  The program may have overwritten some of its own memory
  320. and may in fact be running wild, writing data all over memory and
  321. executing instructions that don't belong to the program.  At this
  322. point when "Terminate, Reboot or Continue" is displayed, the user
  323. can only "Terminate", and in fact the user may not even be able to
  324. do that.
  325.  
  326.  The technical description of what happens is that a WORD or DOUBLE
  327. WORD value has been written to or read from the last address of a
  328. segment.  The "bug" in the program is that the value is not written
  329. to the first byte of the next segment, but rather wraps to the
  330. beginning of the current segment.  This is probably not what was
  331. intended and, in fact, is not allowed on an 80386.
  332.  
  333.  This problem may have existed in the program all along and not
  334. been noticed, or it may be due to the higher addresses now being
  335. used when loading programs into high RAM.  The programmer may have
  336. assumed that the program would never address such high numbers.
  337.  
  338.  DESQview 386 users have two options they may try to fix the
  339. problem.  First, use Change a Program and try to allocate more
  340. memory to the application.  Second, increase the Protection Level
  341. to 3.  This will not alleviate the source of the Exception 13, but
  342. may allow you to find out sooner what is causing the exception.
  343.  
  344.  When Exception 13 is seen outside of DESQview, it is usually not
  345. recoverable and often difficult to fix.  If the program you are
  346. running is using 80386 protected mode, then perhaps it does not
  347. support VCPI (Virtual Control Program Interface).  Since QEMM-386
  348. uses Virtual 8086 mode, such applications cannot be run under QEMM
  349. without VCPI.  There is no choice but to reboot without QEMM, and
  350. contact the developer of the application to see if they intend on
  351. providing VCPI support.
  352.  
  353.  If the program was not written for protected mode, then the
  354. problem is harder to fix.  Write down the information displayed
  355. along with the Exception 13 message.  The data displayed is the
  356. address of the PC when the exception occurred, the contents of the
  357. CPU's registers, and several bytes at the exception location. The
  358. data may be intermixed with the screen display, but it is
  359. locatable.
  360.  
  361.  If any of the registers or the instruction address is 0000, or
  362. FFFE, or FFFF, then the problem is usually "segment wrap". After
  363. rebooting the computer, use LOADHI with no parameters to get a list
  364. of program addresses, or the Manifest First Meg Programs display to
  365. try and see which program was executing at the time of the
  366. exception. If this program has been loaded into high RAM, then see
  367. if loading it below 640K or in a different location eliminates the
  368. problem. Sometimes loading programs in a different order helps, and
  369. sometimes adding or subtracting one from your BUFFERS will change
  370. the location in memory enough to eliminate the problem.
  371.  
  372.  Technical users can use the instruction bytes displayed to
  373. determine the exact instruction which caused the exception.  Using
  374. DEBUG and entering the values into memory allows you to
  375. "unassemble" the code and, along with the register values,
  376. understand the exact nature of the exception.  This usually does
  377. not solve the problem, but it does show you that the exception 13
  378. was caused by a genuine fault.  Knowing which program caused the
  379. exception (it may be some resident program rather than the one you
  380. thought was executing) is crucial in solving an exception 13
  381. problem.  If you cannot figure out which program causes the
  382. exception, you may need to create a "pure" environment. See
  383. Appendix C.
  384.  
  385.  Maximum memory size programs in DESQview
  386.  
  387.  When using DESQview, many people would like to have the largest
  388. possible program area in which to run their programs.  Indeed,
  389. DESQview allows you to "re-use" the memory are below 640K many
  390. times, so having a large area is very important.  You should be
  391. sure that the parameters (using Change a Program) for "Memory Size
  392. (in K)" is quite large (400K is a good number) and "Maximum Program
  393. Memory Size (in K)" is even larger (800K will work).  This makes
  394. sure that the window will be AT LEAST 400K in size, and then
  395. DESQview will allocate more up to the Maximum specified. (The 800K
  396. is far more than is even possible, so you are sure you get all of
  397. the rest without having to figure it out.) In order to gain the
  398. maximum size of memory, you should be using the XDV.COM program (or
  399. have copied XDV.COM to DV.COM, since DOS will always load a ".COM"
  400. file before loading a ".EXE" file).
  401.  
  402.  The XDV.COM program puts some of DV.EXE into High RAM. You can
  403. find out how much by adding "/L" (no quotes) to the XDV command
  404. line to get a display of the free areas, their size, and how much
  405. of DV.EXE is placed there. This points out an interesting dilemma:
  406. since LOADHI puts items into high RAM, and XDV puts pieces of
  407. DV.EXE there too, you may actually end up leaving some of DV.EXE in
  408. Conventional memory because LOADHI has used up so much of it. You
  409. can check your free memory before running DESQview (with CHKDSK or
  410. Manifest) and then check the "Total Available Conventional Memory"
  411. using DESQview's Memory Status command. You may want to evaluate
  412. what TSRs you are running before DESQview, perhaps they would be
  413. better run inside DESQview. This can free up memory.
  414.  
  415.  Using memory in the most efficient way possible
  416.  
  417.  One of QEMM's greatest features is that you can control the memory
  418. you have better than you ever could before.  Many people want to
  419. make sure that the area between 0K and 640K is as large as
  420. possible.  Using high RAM and the LOADHI programs can go a long way
  421. to make sure that the conventional memory area is as big as
  422. possible.  The OPTIMIZE program can assist in maximizing
  423. conventional memory by analyzing the possible methods of loading
  424. items into high RAM and placing them into the best possible
  425. location.  Using Quarterdeck's Manifest program, you can observe
  426. how much memory is still being used below 640K by looking at the
  427. First Meg Programs display.  The DOS Overview display will show you
  428. if more of DOS is being left below 640K that could be loaded high. 
  429. A word of caution:  you can spend a lot of time trying to get an
  430. extra few bytes of memory and not really gain much.  Try to
  431. determine what the memory savings will be before attempting to
  432. spend a lot of time rearranging things. Loading TSRs and device
  433. drivers into high RAM is usually the quickest way to gain useful
  434. amounts of memory. On DOS 2.xx and 3.xx systems, loading BUFFERS
  435. into high RAM is easy and provides a lot of memory savings.
  436.  
  437.  If you need more high RAM, then try QEMM-386's Analyze feature.
  438. There may be areas of memory between 640K and 1024K that you are
  439. not using. You may also find that a particular adapter which is
  440. using a lot of memory addresses above 640K can either be removed or
  441. moved to a different location to get larger contiguous areas of
  442. high RAM. Having many small areas of High RAM is not as useful as
  443. a few large contiguous areas.
  444.  
  445.  If you are not using ANY programs which use graphics, or if some
  446. large programs you use do not need graphics, you can use the VIDRAM
  447. program to gain a significant amount of memory from your EGA or VGA
  448. adapter. 
  449.